Recent advances in computer performance have enabled graphics systems to provide more realistic graphical images using personal computers and home video game computers. In such graphics systems, some procedure must be implemented to “render” or draw graphics primitives to the screen of the system. “Graphics primitives” are a basic component of a graphics picture, such as a polygon, e.g., a triangle, or a vector. All graphics pictures are formed with combinations of these graphic primitives. Many procedures may be utilized to perform graphics primitives rendering.
Conventional graphics systems perform these graphics rendering procedures using a frame buffer. A frame buffer generally comprises a plurality of computer memory chips that store information concerning pixel activation on the system's display screen. Generally, the frame buffer includes all of the graphics data information that will be written onto the screen.
Early graphics systems displayed images representing objects having extremely smooth surfaces. That is, textures, bumps, scratches, or other surface features were not modeled. In order to improve the quality of the image, texture mapping was developed to model the complexity of real world surface images. In general, texture mapping is the mapping of an image or function onto a surface in three dimensions. Texture mapping is a relatively efficient technique for creating the appearance of a complex image without the tedium and computational cost of rendering three dimensional detail that might be found on a surface of an object.
Many parameters have been texture mapped in conventional systems. Some of these parameters include surface color, specular reflection, normal vector perturbation, specularity, transparency, diffuse reflections, displacements, and shadows. In texture mapping, a source image known as the “texture” is mapped onto a surface in three dimensional space. The three dimensional surface is then mapped to the destination image, that is typically a graphics display screen. Examples of the texture of an object include the gravel on a highway or scuff marks on a wooden surface.
In conventional systems a texture is frequently combined with either constant parameters or evaluated parameters. That is, in conventional systems multiple texture colors are not combined in a single execution pass. Examples of the types of combinations or functions available in conventional systems between the texture and the constant parameters or the evaluated parameters include a multiply function, an addition function, and a subtraction function. In some conventional systems, each of these functions are performed in a separate chip. In other conventional systems, these functions are performed in parallel using multiple chips.
The current state-of-the art computer graphics chips allow the combination of multiple textures, evaluated parameters and constants to produce output pixel values. This is sometimes referred to as “pixel shading”. Unfortunately, such pixel shading lacks flexibility. In particular, pixel shading currently does not support the combination of textures, values, and constants, and then use the result as a pointer to access data in a subsequent texture.